package com.freesun.shop.controller;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.freesun.shop.entity.ProdTag;
import com.freesun.shop.service.ProdTagService;
import io.swagger.annotations.ApiOperation;
import org.apache.dubbo.config.annotation.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@RestController
@RequestMapping("/prod/prodTag")
public class ProdTagController {
    private static Logger log=LoggerFactory.getLogger(ProdTagController.class);

    @Reference(check = false)
    private ProdTagService prodTagService;
    @ApiOperation("商品分组分页查询")
    @GetMapping("/page")
    public ResponseEntity<IPage<ProdTag>> findBypage(ProdTag prodTag, Page<ProdTag> page){
        log.info("分页条件查询,当前页:{},每页显示大小:{},本次查询的条件为:{}",page.getCurrent(),page.getSize(),JSONUtil.toJsonStr(prodTag));
        IPage<ProdTag> iPage= prodTagService.findByPage(prodTag,page);
        return ResponseEntity.ok(iPage);
    }
    @ApiOperation("新增商品分组的标签")
    @PostMapping
    public ResponseEntity<Void> saveProdTag(@RequestBody ProdTag prodTag){
        log.info("新增一个商品的标签，{}",JSONUtil.toJsonStr(prodTag));
        prodTag.setCreateTime(LocalDateTime.now());
        prodTag.setUpdateTime(LocalDateTime.now());
        prodTagService.save(prodTag);
        return ResponseEntity.ok().build();
    }

    @ApiOperation("删除商品分组标签")
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteProdTag(@PathVariable("id") Long id){
        log.info("要删除的标签ID：{}",id);
        prodTagService.removeById(id);
        return ResponseEntity.ok().build();
    }
    @ApiOperation("查单单个商品分组")
    @GetMapping("/info/{id}")
    public ResponseEntity<ProdTag> findById(@PathVariable("id") Long id){
        log.info("查询ID为:{},商品分组标签信息",id);
        ProdTag prodTag = prodTagService.getById(id);
        return ResponseEntity.ok(prodTag);
    }
    @ApiOperation("修改商品分组标签")
    @PutMapping
    public ResponseEntity<Void> updateProdTag(@RequestBody ProdTag prodTag){
        log.info("修改标签分组信息:{}",JSONUtil.toJsonStr(prodTag));
        prodTag.setUpdateTime(LocalDateTime.now());
        prodTagService.updateById(prodTag);
        return ResponseEntity.ok().build();
    }
    @ApiOperation("规格数据")
    @GetMapping("/listTagList")
    public ResponseEntity<List<ProdTag>> list(){
        List<ProdTag> list = prodTagService.listProdTags();
        return ResponseEntity.ok(list);
    }
}
